//1.1 导入fs模块
const fs = require('fs')
//1.2 导入path模块
const path = require('path')

//1.3 定义正则表达式，匹配style标签和script标签
const regStyle = /<style>[\s\S]*<\/style>/
const regScript = /<script>[\s\S]*<\/script>/

//2.1读取需要处理的文件
fs.readFile(path.join(__dirname, 'index.html'), 'utf8', function(err, dataStr) {
  //2.2读取文件失败
  if (err) {
    return console.log('读取文件失败', err.message)
  }
  //2.3读取文件成功后调用对应的方法，分别拆解出css，js， html文件
  resolveCss(dataStr)
  resolveScript(dataStr)
  resolveHTML(dataStr)
})

//3.1定义处理css样式的方法
function resolveCss(htmlStr) {
  //3.2使用正则提取需要的内容
  const res = regStyle.exec(htmlStr)
  // console.log(res)
  //3.3将提取出来的样式字符串进行字符串的replace
  const newCss = res[0].replace('<style>', '').replace('</style>', '')
  // console.log(newCss)
  //3.4存入文件
  fs.writeFile(path.join(__dirname, './clock/index.css'), newCss, function(err) {
    if (err) {
      return console.log('写入文件失败' + err.message)      
    }
    console.log('写入文件成功')
    
  })
  
  
}

//3.2定义处理script样式的方法
function resolveScript(htmlStr) {
  //4.2使用正则提取需要的内容
  const res = regScript.exec(htmlStr)
  // console.log(res)
  //4.3将提取出来的样式字符串进行字符串的replace
  const newJs = res[0].replace('<script>', '').replace('</script>', '')
  //4.4存入文件
  fs.writeFile(path.join(__dirname, './clock/index.js'), newJs, function(err) {
    if (err) {
      return console.log('写入文件失败' + err.message)      
    }
    console.log('写入文件成功')
  })
}


//5.1处理Html文件
function resolveHTML(htmlStr) {
  //5.2 将字符串调用replace方法，把内嵌的style和script标签，替换为外联的link和script标签
  const newHtml = htmlStr.replace(regStyle, '<link rel="StyleSheet" href= "./index.css" />').replace(regScript, '<script src="./index.js"></script>')
  fs.writeFile(path.join(__dirname, './clock/index.html'), newHtml, function(err) {
    if (err) {
      return console.log('写入文件失败' + err.message)      
    }
    console.log('写入文件成功')
  })
}